/**
 * Storage 封装
 */

const STORAGE_KEY = 'mall'


export default {
  // 存储值
  setItem(key, value, module_name) {
    // 判断有没有一级对象名
    if (module_name) {
      let val = this.getItem(module_name)
      val[key] = value
      this.setItem(module_name, val)
    } else {
      let val = this.getStorage()
      val[key] = value
      window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val))
    }
  },
  // 获取值
  getItem(key, module_name) {
    if (module_name) {
      // 获得的是 mall 下面的 某某一级对象，返回的是一个 object
      let val = this.getItem(module_name)
      // 这里获取的是 某某一级对象下面的属性
      if (val) return val[key]
    }
    return this.getStorage()[key]
  },
  // 获取全部 Storage 
  getStorage() {
    return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}')
  },
  // 清空 Storage
  clear(key, module_name) {
    let val = this.getStorage()
    if (module_name) {
      if (!val[module_name]) return
      delete val[module_name][key]
    } else {
      delete val[key]
    }
    // 重新写入
    window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val))
  }
}